#ifndef STRUCTCELL_HPP
#define STRUCTCELL_HPP

#include "structCellBase.hpp"

namespace hms {

template<>
class CellTraits<StructCell> : public StructCellTraits
{
public:
	using MeshType     = StructMesh;
	using CentroidType = Matrix2Xs::ConstColXpr;
};

class StructCell : public StructCellBase<StructCell>
{
public:
	using Traits = CellTraits<StructCell>;
	using MeshType     = Traits::MeshType;
	using CentroidType = Traits::CentroidType;

private:
	StructCell( const StructMesh&, Index );
	StructCell( const StructMesh&, Index, Index );

	auto areaImp    () const -> scalar;
	auto circumfImp () const -> scalar;
	auto centroidImp() const -> CentroidType;

	friend CellBase;
	friend StructMeshBase<StructMesh>;
	friend StructCells;
};

}

#endif